{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "19e5ddf6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "开始录音\n",
      "录音结束\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'zuoye.wav'"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pyaudio\n",
    "import wave\n",
    "def get_audio(sec):\n",
    "    #创建对象\n",
    "    p = pyaudio.PyAudio()\n",
    "    #创建流：采样位，声道数，缓冲区大小，input = True,framerate:采样频率,nchannels:声道数,nframes:采样点数\n",
    "    stream = p.open(format = pyaudio.paInt16,channels = 1,rate = 16000,input = True,frames_per_buffer = 1024)\n",
    "    #创建式打开音频文件\n",
    "    wf  = wave.open('zuoye.wav','wb')\n",
    "    #设置音频文件的属性：声道数，采样位，采样频率\n",
    "    wf.setnchannels(1)\n",
    "    wf.setsampwidth(p.get_sample_size(pyaudio.paInt16))\n",
    "    wf.setframerate(16000)\n",
    "    print('开始录音')\n",
    "    for i in range(int(16000*sec/1024)):\n",
    "        data = stream.read(1024)\n",
    "        wf.writeframes(data)\n",
    "    print('录音结束')\n",
    "    stream.stop_stream()\n",
    "    stream.close()\n",
    "    p.terminate()\n",
    "    wf.close()\n",
    "    return 'zuoye.wav'\n",
    "get_audio(6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "1877deb8",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pyaudio\n",
    "import wave\n",
    "#播放音频\n",
    "def play_audio(file):\n",
    "    p = pyaudio.PyAudio()\n",
    "    wf = wave.open(file,'rb')\n",
    "    stream = p.open(format = p.get_format_from_width(wf.getsampwidth()),channels = wf.getnchannels(),rate = wf.getframerate(),output = True)\n",
    "    data = wf.readframes(1024)\n",
    "    while len(data)>0:\n",
    "        stream.write(data)\n",
    "        data = wf.readframes(1024)\n",
    "    stream.stop_stream()\n",
    "    stream.close()\n",
    "    p.terminate()\n",
    "    wf.close()\n",
    "    \n",
    "play_audio('zuoye.wav')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "63cdac0a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#画出波形图\n",
    "import wave\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import os\n",
    "f = wave.open(r\"zuoye.wav\", \"rb\")\n",
    "params = f.getparams()\n",
    "nchannels, sampwidth, framerate, nframes = params[:4]\n",
    "strData = f.readframes(nframes)#读取音频，字符串格式\n",
    "waveData = waveData*1.0/(max(abs(waveData)))#wave幅值归一化\n",
    "time = np.arange(0,nframes)*(1.0 / framerate)#计算音频总时长\n",
    "fig,ax1 = plt.subplots()\n",
    "ax1.plot(time,waveData)\n",
    "ax1.set_xlabel(\"Time(s)\")\n",
    "ax1.set_ylabel(\"Amplitude\")\n",
    "ax1.set_title(\"Single channel wavedata\")\n",
    "ax1.grid('on')#标尺，on：有，off:无。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "d420b528",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Qiao\\AppData\\Local\\Temp/ipykernel_13632/4234986641.py:10: DeprecationWarning: The binary mode of fromstring is deprecated, as it behaves surprisingly on unicode inputs. Use frombuffer instead\n",
      "  waveData = np.fromstring(str_data, dtype=np.short)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 720x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import wave\n",
    "import matplotlib.pyplot as plt\n",
    "wlen=512\n",
    "inc=128\n",
    "f = wave.open(r\"zuoye.wav\", \"rb\")\n",
    "params = f.getparams()\n",
    "nchannels, sampwidth, framerate, nframes = params[:4]\n",
    "str_data = f.readframes(nframes)\n",
    "waveData = np.fromstring(str_data, dtype=np.short)\n",
    "waveData = waveData*1.0/(max(abs(waveData)))\n",
    "time = np.arange(0, wlen) * (1.0 / framerate)\n",
    "signal_length=len(waveData) #信号总长度\n",
    "if signal_length<=wlen: #若信号长度小于一个帧的长度，则帧数定义为1\n",
    "        nf=1\n",
    "else: #否则，计算帧的总长度\n",
    "        nf=int(np.ceil((1.0*signal_length-wlen+inc)/inc))\n",
    "pad_length=int((nf-1)*inc+wlen) #所有帧加起来总的铺平后的长度\n",
    "zeros=np.zeros((pad_length-signal_length,)) #不够的长度使用0填补，类似于FFT中的扩充数组操作\n",
    "pad_signal=np.concatenate((waveData,zeros)) #填补后的信号记为pad_signal\n",
    "indices=np.tile(np.arange(0,wlen),(nf,1))+np.tile(np.arange(0,nf*inc,inc),(wlen,1)).T  #相当于对所有帧的时间点进行抽取，得到nf*nw长度的矩阵\n",
    "indices=np.array(indices,dtype=np.int32) #将indices转化为矩阵\n",
    "frames=pad_signal[indices] #得到帧信号\n",
    "a=frames[30:31]\n",
    "fig,ax1 = plt.subplots()\n",
    "plt.figure(figsize=(10,4))\n",
    "ax1.plot(time,a[0],c=\"g\")\n",
    "ax1.grid()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "14fa009e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1fef998fd30>]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#hanning窗\n",
    "import pylab as pl\n",
    "import scipy.signal as signal\n",
    "pl.figure(figsize=(6,2))\n",
    "pl.plot(signal.windows.hann(512))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "53c68990",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.00000000e+00  0.00000000e+00 -3.12265801e-05  0.00000000e+00\n",
      "  0.00000000e+00  0.00000000e+00  0.00000000e+00 -3.12265801e-05\n",
      "  0.00000000e+00  0.00000000e+00]\n",
      "[[  0   1   2 ... 509 510 511]\n",
      " [128 129 130 ... 637 638 639]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#加上hanning窗的图像\n",
    "import numpy as np\n",
    "import wave\n",
    "import matplotlib.pyplot as plt\n",
    "wlen=512\n",
    "inc=128\n",
    "f = wave.open(r\"zuoye.wav\", \"rb\")\n",
    "params = f.getparams()\n",
    "nchannels, sampwidth, framerate, nframes = params[:4]\n",
    "str_data = f.readframes(nframes)\n",
    "waveData = waveData*1.0/(max(abs(waveData)))\n",
    "print(waveData[:10])\n",
    "time = np.arange(0, wlen) * (1.0 / framerate)\n",
    "signal_length=len(waveData) #信号总长度\n",
    "if signal_length<=wlen: #若信号长度小于一个帧的长度，则帧数定义为1\n",
    "        nf=1\n",
    "else: #否则，计算帧的总长度\n",
    "        nf=int(np.ceil((1.0*signal_length-wlen+inc)/inc))\n",
    "pad_length=int((nf-1)*inc+wlen) #所有帧加起来总的铺平后的长度\n",
    "zeros=np.zeros((pad_length-signal_length,)) #不够的长度使用0填补，类似于FFT中的扩充数组操作\n",
    "pad_signal=np.concatenate((waveData,zeros)) #填补后的信号记为pad_signal\n",
    "print(indices[:2])\n",
    "indices=np.tile(np.arange(0,wlen),(nf,1))+np.tile(np.arange(0,nf*inc,inc),(wlen,1)).T  #相当于对所有帧的时间点进行抽取，得到nf*nw长度的矩阵\n",
    "indices=np.array(indices,dtype=np.int32) #将indices转化为矩阵\n",
    "frames=pad_signal[indices] #得到帧信号\n",
    "a=frames[30:31]\n",
    "windown=np.hanning(wlen)  #调用汉明窗\n",
    "b=a[0]*windown\n",
    "plt.figure(figsize=(10,4))\n",
    "plt.plot(time,b,c=\"g\")\n",
    "plt.grid()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "0a42528f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#添加高斯噪声\n",
    "gaussian_noise = np.random.normal(0,2,len(waveData))  # 生成高斯白噪声\n",
    "data_noise = waveData[0]+0.02*gaussian_noise#添加噪声\n",
    "noiseData1 = data_noise*1.0/(max(abs(data_noise)))#wave幅值归一化\n",
    "time = np.arange(0,nframes)*(1.0 / framerate)#计算音频总时长\n",
    "plt.plot(time,noiseData1)\n",
    "plt.xlabel(\"Time(s)\")\n",
    "plt.ylabel(\"Amplitude\")\n",
    "plt.title(\"gaussian noise\")\n",
    "plt.grid('on')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "2cc8c2ec",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#添加布朗噪声\n",
    "brownian_noise = np.cumsum(np.random.uniform(-1,1,len(waveData)))\n",
    "brownian_noise /= max(abs(brownian_noise)) # 生成布朗噪声\n",
    "data_noise = waveData[0]+0.01*brownian_noise#添加噪声\n",
    "noiseData1 = data_noise*1.0/(max(abs(data_noise)))#wave幅值归一化\n",
    "time = np.arange(0,nframes)*(1.0 / framerate)#计算音频总时长\n",
    "plt.plot(time,noiseData1)\n",
    "plt.xlabel(\"Time(s)\")\n",
    "plt.ylabel(\"Amplitude\")\n",
    "plt.title(\"gaussian noise\")\n",
    "plt.grid('on')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "62b152ed",
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "object too deep for desired array",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_13632/3219826573.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[0mvariance\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mwaveData\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvar\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mwaveData\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mwaveData\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcorrelate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mmode\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'valid'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mn\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mn\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mm\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvariance\u001b[0m\u001b[1;33m*\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mn\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mn\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mm\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32m<__array_function__ internals>\u001b[0m in \u001b[0;36mcorrelate\u001b[1;34m(*args, **kwargs)\u001b[0m\n",
      "\u001b[1;32mD:\\anaconda3\\lib\\site-packages\\numpy\\core\\numeric.py\u001b[0m in \u001b[0;36mcorrelate\u001b[1;34m(a, v, mode)\u001b[0m\n\u001b[0;32m    744\u001b[0m     \"\"\"\n\u001b[0;32m    745\u001b[0m     \u001b[0mmode\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_mode_from_name\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmode\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 746\u001b[1;33m     \u001b[1;32mreturn\u001b[0m \u001b[0mmultiarray\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcorrelate2\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mv\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    747\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    748\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mValueError\u001b[0m: object too deep for desired array"
     ]
    }
   ],
   "source": [
    "#自相关\n",
    "m = 50\n",
    "n = len(waveData)\n",
    "variance = waveData.var()\n",
    "x = waveData-waveData.mean()\n",
    "result = np.correlate(x,x,mode = 'valid')[-n+1:-n+m+1]/(variance*(np.arange(n-1,n-1-m,-1)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "689f6cd0",
   "metadata": {},
   "outputs": [
    {
     "ename": "SyntaxError",
     "evalue": "Missing parentheses in call to 'print'. Did you mean print('size is ', size)? (Temp/ipykernel_13632/29281138.py, line 14)",
     "output_type": "error",
     "traceback": [
      "\u001b[1;36m  File \u001b[1;32m\"C:\\Users\\Qiao\\AppData\\Local\\Temp/ipykernel_13632/29281138.py\"\u001b[1;36m, line \u001b[1;32m14\u001b[0m\n\u001b[1;33m    print 'size is ', size\u001b[0m\n\u001b[1;37m          ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m Missing parentheses in call to 'print'. Did you mean print('size is ', size)?\n"
     ]
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "ca37cb87",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Qiao\\AppData\\Local\\Temp/ipykernel_13632/988200672.py:17: DeprecationWarning: The binary mode of fromstring is deprecated, as it behaves surprisingly on unicode inputs. Use frombuffer instead\n",
      "  waveData = np.fromstring(str_data, dtype=np.short)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#信号的快速傅里叶变化\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import wave\n",
    "\n",
    "class Wav_FFT(object):\n",
    "    def __init__(self, wav_path=r\"zuoye.wav\"):\n",
    "        self.path = wav_path\n",
    "        \n",
    "    def read_wav(self):\n",
    "        with  wave.open(self.path, \"rb\") as f:\n",
    "            parameters = f.getparams()\n",
    "            self.nchannels, self.sampwidth, self.framerate, self.nframes = parameters[:4]            \n",
    "            # 读取波形数据\n",
    "            str_data = f.readframes(self.nframes)\n",
    "            waveData = np.fromstring(str_data, dtype=np.short)\n",
    "            waveData.shape = -1, self.nchannels\n",
    "            self.waveData = waveData.T\n",
    "            \n",
    "    def FFT(self):\n",
    "        yf = np.fft.fft(self.waveData)# FFT\n",
    "        bias =  (yf[:, 0] / self.nframes).real\n",
    "        yf_amplitude = np.abs(yf)* (2.0/self.nframes)\n",
    "        yf_amplitude[:, 0] = bias #直流分量(0 Hz处)修正\n",
    "        self.yf_amplitude = yf_amplitude[:, 0:self.nframes//2]#有效信息只有一半\n",
    "    \n",
    "    def plot(self):\n",
    "        matplotlib.rcParams[\"axes.unicode_minus\"] = False\n",
    "        self.time = np.arange(0, self.nframes) * (1.0 / self.framerate)\n",
    "        self.freq = np.arange(0,self.nframes//2) * self.framerate / self.nframes #实际频率\n",
    "        for i in range(self.nchannels):\n",
    "            plt.subplot(2, self.nchannels, i+1)\n",
    "            plt.plot(self.time, self.waveData[i,:])\n",
    "            plt.xlabel(\"time \")\n",
    "            plt.ylabel(\"signal\")\n",
    "            plt.grid()\n",
    "            plt.title(\"%d Time domain signal\" %(i+1))\n",
    "            plt.subplot(2, self.nchannels, self.nchannels+i+1)\n",
    "            plt.plot(self.freq, self.yf_amplitude[i, :], \"r-\")\n",
    "            plt.xlabel(\"Frequency [Hz]\")\n",
    "            plt.ylabel(\"Amplitude \")\n",
    "            plt.grid()\n",
    "            plt.title(\"FFT (%d Frequency domain signal)\"%(i+1))    \n",
    "        plt.suptitle(\"wav fft\", fontsize =14, color =\"magenta\")\n",
    "        plt.tight_layout()\n",
    "        plt.show()        \n",
    "wav = Wav_FFT(wav_path=r\"zuoye.wav\")\n",
    "wav.read_wav()\n",
    "wav.FFT()\n",
    "wav.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "ef5bdcfc",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#余弦变换（包）\n",
    "import cv2\n",
    "import wave\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import os\n",
    "f = wave.open(r\"zuoye.wav\", \"rb\")\n",
    "params = f.getparams()\n",
    "nchannels, sampwidth, framerate, nframes = params[:4]\n",
    "strData = f.readframes(nframes)#读取音频，字符串格式\n",
    "waveData = waveData*1.0/(max(abs(waveData)))#wave幅值归一化\n",
    "time = np.arange(0,nframes)*(1.0 / framerate)#计算音频总时长\n",
    "waveData = cv2.dct(waveData)\n",
    "fig,ax1 = plt.subplots()\n",
    "ax1.plot(time,waveData)\n",
    "ax1.set_xlabel(\"Time(s)\")\n",
    "ax1.set_ylabel(\"Amplitude\")\n",
    "ax1.set_title(\"Single channel wavedata\")\n",
    "ax1.grid('on')#标尺，on：有，off:无。\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "134036c1",
   "metadata": {},
   "outputs": [
    {
     "ename": "MemoryError",
     "evalue": "Unable to allocate 67.6 GiB for an array with shape (95232, 95232) and data type float64",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mMemoryError\u001b[0m                               Traceback (most recent call last)",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_13632/1842057314.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     20\u001b[0m         \u001b[0mX\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2\u001b[0m \u001b[1;33m/\u001b[0m \u001b[0mN\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mC\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmultiply\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcos\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mts\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mk\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpi\u001b[0m \u001b[1;33m/\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;33m/\u001b[0m \u001b[0mN\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     21\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 22\u001b[1;33m \u001b[0ms_dct\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdct\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mwaveData\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     23\u001b[0m \u001b[0mfig\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0max1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msubplots\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     24\u001b[0m \u001b[0max1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtime\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0ms_dct\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_13632/1842057314.py\u001b[0m in \u001b[0;36mdct\u001b[1;34m(x)\u001b[0m\n\u001b[0;32m     18\u001b[0m     \u001b[0mC\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m/\u001b[0m \u001b[1;36m2\u001b[0m  \u001b[1;31m# 将C[0]赋值\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     19\u001b[0m     \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mN\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 20\u001b[1;33m         \u001b[0mX\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2\u001b[0m \u001b[1;33m/\u001b[0m \u001b[0mN\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mC\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmultiply\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcos\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mts\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mk\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpi\u001b[0m \u001b[1;33m/\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;33m/\u001b[0m \u001b[0mN\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     21\u001b[0m     \u001b[1;32mreturn\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     22\u001b[0m \u001b[0ms_dct\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdct\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mwaveData\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mMemoryError\u001b[0m: Unable to allocate 67.6 GiB for an array with shape (95232, 95232) and data type float64"
     ]
    }
   ],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
